<?php 
class ocorrencia_envolvidoModel extends Model{
    public $tabela = "ocorrencia_envolvido";
    public $pkey   = array('cod_usuario','cod_ocorrencia');
    public $dados  = array(
         'cod_usuario' => array(
	    'name'     => 'Usuário',
	    'type'     => 'int',
	    'size'     => '11',
	    'pkey'    => true,
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
	    'fkey' => array(
	        'model' => 'usuario/login',
	        'cardinalidade' => '1n',
	        'keys' => array('cod_usuario', 'user_name', 'user_cargo'),
                'onupdate' => 'cascade',
                'ondelete' => 'cascade',
	    ),
        ),
         'cod_ocorrencia' => array(
	    'name'     => 'Assunto',
	    'type'     => 'int',
	    'size'     => '11',
	    'pkey'    => true,
            'especial' => 'session',
            'session'  => 'ocorrencia/ocorrencias',
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
	    'fkey' => array(
	        'model' => 'ocorrencia/ocorrencias',
	        'cardinalidade' => '1n',
	        'keys' => array('cod_ocorrencia', 'assunto'),
                'onupdate' => 'cascade',
                'ondelete' => 'cascade',
	    ),
        ),
         'tipo_envolvimento' => array(
	    'name'     => 'Tipo de Envolvimento',
	    'type'     => 'enum',
	    'default' => 'envolvido',
	    'options' => array(
	    	'responsavel' => 'Responsável',
	    	'envolvido'   => 'Participante',
	    	'convidado'   => 'Convidado',
	    ),
            'description' => array(
                'responsavel' => 'O usuário responsável poderá além de enviar, 
                    receber e visualizar todas as mensagens de um Assunto, 
                    editar os dados da mesma (tais como status, descrição e quem participa) ',
                'envolvido'   => 'O usuário participante poderá enviar, 
                    receber e visualizar todas as mensagens de um Assunto, 
                    independentemente delas serem enviadas diretamente para ele.',
                'convidado'   => 'O usuário convidado poderá enviar e receber mensagens, 
                    mas só poderá visualizar apenas as destinadas à ele',
                'nenhum'   => 'Remove o usuário do Assunto'
             ),
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'lida' => array(
	    'name'     => 'Lida',
	    'type'     => 'enum',
	    'default' => 'n',
            'private' => true,
	    'options' => array(
	    	's' => 's',
	    	'n' => 'n',
	    ),
	    'grid'    => true,
	    'display' => true,
        ),
         'importante' => array(
	    'name'     => 'Importante',
	    'type'     => 'enum',
	    'default' => 'n',
             'private' => true,
	    'options' => array(
	    	's' => 's',
	    	'n' => 'n',
	    ),
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
        'in_blacklist' => array(
	    'name'     => 'in_blacklist',
	    'type'     => 'enum',
	    'default' => 'n',
            'private' => true,
	    'options' => array(
	    	's' => 's',
	    	'n' => 'n',
	    ),
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'data_envolvimento' => array(
	    'name'     => 'Data de Envolvimento',
	    'type'     => 'timestamp',
             'private' => true,
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
        'ultima_msg' => array(
	    'name'     => 'Última Mensagem',
	    'type'     => 'int',
            'private'  => true,
            'fkey' => array(
	        'model' => 'ocorrencia/mensagem',
	        'cardinalidade' => '1n',
	        'keys' => array('cod_mensagem', 'cod_mensagem'),
                'onupdate' => 'cascade',
                'ondelete' => 'cascade',
	    ),
        )
        
        );
    
    public function SetRead($cod_ocorrencia, $cod_usuario){
        $item = $this->selecionar(array('lida'), "cod_usuario='$cod_usuario' AND cod_ocorrencia = '$cod_ocorrencia'");
        if(empty ($item)) return false; 
        $item = array_shift($item);
        if($item['lida'] == 'n'){
            $array['lida']       = 's';
            $array['ultima_msg'] = 'FUNC_NULL';
            if(!$this->editar(array($cod_usuario, $cod_ocorrencia), $array))return false;
            
        }
        return true; 
    }
    
    public function SetUnread($cod_ocorrencia, $cod_usuario, $cod_last_msg){
        $item = $this->selecionar(array('lida'), "cod_usuario='$cod_usuario' AND cod_ocorrencia = '$cod_ocorrencia'");
        if(empty ($item)) return false; 
        $item = array_shift($item);
        if($item['lida'] == 's'){
            $array['lida']       = 'n';
            $array['ultima_msg'] = $cod_last_msg;
            if(!$this->editar(array($cod_usuario, $cod_ocorrencia), $array)) return false;
            
        }
        return true; 
    }
    
    public function getFirstUnreadMessage($cod_ocorrencia, $cod_usuario){
        $where = "cod_usuario = '$cod_usuario' AND cod_ocorrencia = '$cod_ocorrencia'";
        $last  = $this->selecionar(array('ultima_msg'), $where);
        if(empty($last)) return 0;
        $last  = array_shift($last);
        return $last['ultima_msg'];
    }

    public function getEnvolvidosByOcorrencia($cod_ocorrencia){
        return $this->selecionar(array(), "cod_ocorrencia = '$cod_ocorrencia'");
    }
    
    public function getUnreadEnvolvidosByOcorrencia($cod_ocorrencia){
        $var = $this->selecionar(array('cod_usuario'), "cod_ocorrencia = '$cod_ocorrencia' AND lida = 'n'");
        //print_r($var);
        //die($this->db->getSentenca());
        if(empty ($var)) return $var;
        
        $out = array();
        foreach($var as $v) $out[] = $v['cod_usuario'];
        return $out;
    }

}
?>